Ainsi, tout en étant capable de communiquer entre le principal et de restituer un processus à l'aide d'IPC est excellent, l'enregistrement
de plusieurs canaux d'écoute à chaque extrémité peut rapidement devenir désorganisé et déroutant.
Cela dit, dans la dernière leçon, nous avons vu une alternative plus simple pour accéder à la logique du processus de mine
depuis le moteur de rendu au moyen du module distant.
Cependant, comme discuté, le module distant ne convient pas à toutes les applications, et à partir de la version
électronique, 10 sera désactivé par défaut, principalement en raison de problèmes de sécurité.
Donc, avec cela, les modules IPSI d'Electron ont introduit une alternative pour gérer la logique ou les
références entre les processus sans inclure le module distant.
Avant de démontrer, cependant, mettons en place un scénario typique, quoique simple.
Comme précédemment, disons que nous devons invoquer un dialogue depuis le processus de rendu, mais que nous avons une politique stricte de
ne pas utiliser le module distant.
Je vais commencer par le désactiver explicitement sur les fenêtres principales où le contenu défini active le module distant, cette
fois sur false.
Encore une fois, à partir de la version électronique 10, ce sera la valeur par défaut, mais elle est néanmoins maintenant désactivée.
Ensuite, une fois cela fait, créons une fonction simple dans le processus principal pour afficher une boîte de
dialogue avec quelques options.
Le dialogue étant un module de processus principal de la fonction de cours.
Demandez à fruit dans lequel je commencerai par définir quelques options ou fruits selon le nom de la fonction
attribuant aux fruits un tableau.
Ce seront nos boutons de dialogue avec pomme, orange et raisin créer la boîte de dialogue de dialogue dot show message nécessitera
le module de dialogue et le second passant cet objet et options avec un paramètre de message
de dialogue.
Dites cueillir un fruit.
Et des boutons.
Étant donné que ce tableau de fruits nécessite ce module de dialogue électronique, ce que nous devons encore faire est de gérer
la sélection de l'utilisateur.
Ainsi, l'un de ces fruits, en fonction du bouton sur lequel l'utilisateur clique, renvoie des fruits.
Nous ne connaissons pas encore l'indice.
Récupérez donc cet index du dialogue, en attribuant au choix la valeur de retour des dialogues.
C'est une promesse, mais nous réglerons cela dans une seconde.
Vérification de l'index du bouton sur ce retour via la propriété response.
Donc, en renvoyant l'un de ceux-ci, celui à l'index du bouton ou de la réponse sur laquelle vous avez cliqué pour le moment, le
choix tiendra simplement une promesse, cependant, changez cette fonction pour qu'elle soit asynchrone, ce qui signifie que toute cette fonction
renvoie désormais automatiquement une promesse elle-même et de faire sûr que nous avons la valeur de la promesse renvoyée
par le dialogue et attribuer cela au choix et non à la promesse.
Attendez.
Si vous n'êtes pas familier avec async et attendez, j'ai lié quelques explications dans la leçon.
Des ressources qui valent vraiment la peine d'être connues pour quiconque travaille avec JavaScript moderne.
OK, c'est notre fonction de dialogue terminée.
Je vais l'appeler directement dans le processus principal pour m'assurer qu'il fonctionne à nouveau après quelques secondes.
Donc, dans la fenêtre de création, commencez par un temps mort.
Dans lequel nous pouvons appeler demander des fruits.
Rappelez-vous que cela renvoie maintenant une promesse car il s'agit d'une fonction asynchrone, donc résolvez la
promesse de retour en accédant ensuite dans son rappel à la valeur du fruit sélectionné ou sur.
Ce que je vais simplement me déconnecter du processus principal après trois secondes.
Sauver.
Quelques instants plus tard, nous obtenons le dialogue, je choisirai l'orange, vérifierai le terminal, et là, la valeur du
bouton sélectionné est verrouillée, ce qui signifie que tout fonctionne.
Mais maintenant, commençons par le processus de rendu.
Voyons à quoi cela ressemblerait en utilisant la messagerie époxy de base.
Créez d'abord le bouton pour déclencher le dialogue.
Donc dans l'index sur HTML, ajoutez un nouveau bouton avec une pause précédente pour le mettre sur sa propre ligne, donnant à
ce bouton une idée de USQUE juste pour que nous puissions le sélectionner, choisir un fruit qui le fera et le rendu
esquive.
Commencez par sélectionner cet élément de document d'élément de bouton par id id étant ask et écoutez sur cet élément de bouton pour
un clic ajouter un écouteur d'événement pour un clic avec un rappel à déclencher quand il est cliqué.
Donc, comme mentionné, commençons par faire cela avec des messages ipsi simples.
Nécessite le rendu ipsi d'un module const ipca renderer.
En appelant le gestionnaire de clics ipsi renderer send afin de l'envoyer au processus principal sur Aske Fruit Channel, nous n'avons en fait pas besoin d'envoyer quoi que
ce soit avec cela, car nous disons simplement au processus principal d'afficher le
dialogue.
Revenez ensuite au processus principal, écoutez les messages entrants sur ce canal.
Nécessite ce module principal ipsi.
IPSI main.
Et écoutez avec IPSI Maine sur Aske Fruit, ce canal que nous envoyons depuis le moteur de rendu après ce rappel de
l'auditeur au feu quand quelque chose est reçu sur ce canal avec l'argument d'événement très important
s'exécutant dans ce rappel, demandez à fruit.
Donc afficher le dialogue à l'utilisateur, demander des retours de nourriture, une promesse étant asynchrone, et cette promesse attendra
à son tour les dialogues, promet de se résoudre en premier.
Alors appelez alors qui, comme précédemment, contient la réponse du dialogue à ce stade.
Ensuite, nous avons le fruit que l'utilisateur a choisi afin que nous puissions enfin le renvoyer au moteur de rendu en
utilisant IPSI sur la réponse d'appel à l'événement de message d'origine sur un autre canal.
Faites de cette réponse le fruit de l'envoi comme le seul et unique argument de la réponse du dialogue.
Donc, juste pour garder une trace, l'utilisateur clique sur le bouton, ce qui amène le moteur de rendu à envoyer un message au processus principal.
Le processeur principal affiche alors le dialogue, invitant l'utilisateur à faire une sélection, ce qui, une fois
que l'utilisateur le fait, nous amène le processus principal à renvoyer cette sélection via ipsi au moteur de rendu.
Mais nous n'avons pas fini.
Le moteur de rendu doit maintenant également écouter cette réponse.
Revenons donc dans le moteur de rendu.
Écoutez avec le rendu IPSC sur le fruit de la réponse, ce canal de réponse passant un rappel avec l'événement de message et les
arguments de message que je déconnecte dans ce moteur de rendu ou des outils de développement.
Cependant, nous ne répondons qu'avec un seul argument, alors rendez cela un peu plus logique en l'appelant
simplement réponse.
Ils sont tous faits.
Enregistrez ce qui recharge l'application, cliquez sur le bouton, fermez la fenêtre pour envoyer un message au processus principal et nous montrer
la boîte de dialogue.
Choisissez l'un d'entre eux, je dirai Apple, qui est reçu par le processus principal et renvoyé au
processus Windows où nous l'écoutons à nouveau et le verrouillons.
Donc ça marche.
Et même si cela ne semble probablement pas si important, une fois que vous commencez à accéder à des dizaines, voire
des centaines de fonctions, la dénomination des chaînes et les auditeurs peuvent devenir très difficiles à gérer.
Le module distant aurait beaucoup simplifié.
Mais comme mentionné à plusieurs reprises, le module distant n'est pas toujours une option.
Et pour cette raison, nous avons maintenant deux méthodes IPC qui simplifient le processus de gestion de la logique.
Premièrement, dans le processus de rendu, nous avons IPSI invoquer pour appeler une fonction dans le processus principal, puis
pour recevoir et gérer de telles invocations.
Nous avons une poignée IPSI dans le processus principal, alors convertissons tout ce que nous venons d'ajouter à l'application pour utiliser à
la place ces deux méthodes dans le moteur de rendu.
Je vais me débarrasser de l'auditeur de réponse.
Pas besoin de çà.
Et toujours dans les boutons.
Cliquez sur Gestionnaire pour remplacer la méthode d'envoi par l'invocation du rendu ipsi.
J'utiliserai le même nom de canal cette fois pour indiquer au processus principal ce qu'il faut appeler Aske
Fruit.
C'est tout.
Ajoutera le gestionnaire dans une seconde.
Mais d'abord, au cours du processus principal, nous pouvons maintenant gérer l'invocation spécifique au lieu d'écouter sur un
canal persay se débarrasser de tout dans cet auditeur, en le changeant pour gérer aske fruit correspondant à la méthode invoke, en
prenant toujours un rappel, bien que nous puissions avoir vient d'utiliser la fonction directement au
lieu d'un rappel.
Mais Inya exécute et retourne avec des fruits.
C'est tout.
Demandez-le retourne une promesse bien sûr.
Nous devons donc gérer cela dans le moteur de rendu directement sur l'appel de la méthode invoke, puis
contenant la réponse que je verrouillerai.
Cliquez à nouveau sur le bouton.
Choisir Apple, et ils sont exactement comme avant que nous obtenions la réponse du processus principal, mais cette fois
sans un va-et-vient compliqué avec différents noms de canaux.
Encore une fois, bien que cela puisse sembler une petite commodité, l'invocation et la gestion devraient être la solution
lors de la communication de la logique entre les processeurs et rendront les applications denses en messages IPSI infiniment plus
gérables.